java什么会使安卓 4.1中的加载速度变慢。X,而不是4.2?
我正在使用UrlImageViewHelper在adapterview中加载图片
我的适配器是:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView=new SquaredImageView(getContext());
}
SquaredImageView view= (SquaredImageView) convertView;
final long time=System.currentTimeMillis();
UrlImageViewHelper.setUrlDrawable(view,getItem(position).getLook_picture(),
R.drawable.placeholder_bkp, -1,new UrlImageViewCallback() {
@Override
public void onLoaded(ImageView imageView, Bitmap loadedBitmap,
String url, boolean loadedFromCache) {
Log.d(TAG,"time : "+ (System.currentTimeMillis()-time));
}
});
return view;
}
我正在下载并显示全宽列表中的大图片(620x620 jpg)。第一次下载/显示时速度较慢。升级到安卓4.2后,这个问题不再出现。在HTC一号上
我试图分析这些调用,我相信在很长的调用期间,它会挂起读取socket输入流
有人知道为什么这两个平台在性能上存在如此大的差异吗
Logcat输出:(100 ms以下的计时通常是重复的)
安卓 4.1.2 Galaxy SIII mini
- 时间:3217
- 时间:4782
- 时间:124
- 时间:56
- 时间:168
- 时间:84
- 时间:102
- 时间:2819
- 时间:2703
- 时间:154
- 时间:2468
- 时间:81
- 时间:40
- 时间:52
- 时间:2495
- 时间:37
- 时间:2007年
- 时间:58
- 时间:38
- 时间:119
- 时间:80
- 时间:44
- 时间:2419
- 时间:1651
- 时间:40
- 时间:2766
- 时间:90
- 时间:1889
- 时间:183
- 时间:2515
- 时间:58
- 时间:3345
- 时间:2661
- 时间:81
- 时间:2434
- 时间:119
大多在1.5秒以上。用户需要逐个滚动项目以查看图片
在安卓 4.3 nexus 4上:
- 时间:47
- 时间:1111
- 时间:154
- 时间:46
- 时间:124
- 时间:115
- 时间:150
- 时间:201
- 时间:332
- 时间:366
- 时间:450
- 时间:82
- 时间:167
- 时间:81
- 时间:150
- 时间:224
- 时间:224
- 时间:143
- 时间:185
- 时间:66
- 时间:183
- 时间:66
- 时间:218
- 时间:98
- 时间:169
- 时间:49
- 时间:148
- 时间:65
- 时间:64
- 时间:60
- 时间:169
- 时间:51
持续低于500毫秒,列表可用
# 1 楼答案
(我不指望这个答案会得到赏金)
UrlImageViewHelper使用HttpURLConnection对提供图像的web服务器进行http调用。我们使用了HttpURLConnection(并尝试了大多数其他类来实现http GET),我们发现它是一般脆弱类(例如org.apache.http等)中最不脆弱的(尤其是在Android 2.3上)。有一次,我在我们的web服务器上使用了协议分析器(tcpdump或tshark),发现ACK没有及时返回,我想(这是一年前的事),我在WiFi和手机数据(t-mobile GSM)上发现了或多或少相同的东西。我得出的结论是,这些课程中存在低级问题,也许是Dalvik本身的问题。再说一次,我不指望这个答案会得到赏金,我没有试图证明我的断言,我只是在叙述我在调查类似问题时取得的进展
# 2 楼答案
这与手机上运行的操作系统无关。最可能的原因是设备上其他应用程序正在消耗的RAM内存量。出于测试目的,请尝试在运行应用程序不多的新设备上运行相同的代码